import java.text.DecimalFormat;
public class Rational extends Number implements Comparable {
    private long numerator = 0;
    // 定义私有性分母
    private long denominator = 1;

    public Rational() {
        this(0, 1);
    }
    void setNumerator(int a) {
        int c = f(Math.abs(a), denominator);
        numerator = a / c;
        denominator = denominator / c;
        if (numerator < 0 && denominator < 0) {
            numerator = -numerator;
            denominator = -denominator;
        }
    }

    void setDenominator(int b){
        int c = f(numerator, Math.abs(b));
        numerator =numerator/c;
        denominator =b/c;
        if(numerator< 0&&denominator<0) {
            numerator = -numerator;
            denominator = -denominator;
        }
    }

    int getNumerator() {
        return numerator;
    }

    int getDenominator() {
        return denominator;
    }

    int f(int a, int b) {
        if(a== 0) return 1;
        if(a<b){
            int c = a;
            a=b;
            b= c;
        }
        int r=a%b;
        while(r!= 0){
            a=b;
            b=r;
            r=a%b;
        }
        return b;
    }
    Rational add(Rational r){
        int a = r.getNumerator();
        int b = r.getDenominator();
        int newNumerator = numerator * b + denominator * a;
        int newDenominator = denominator * b;
        Rational result = new Rational();
        result.setNumerator(newNumerator);
        result.setDenominator(newDenominator);
        return result;
    }
    Rational sub(Rational r){
        int a = r.getNumerator();
        int b = r.getDenominator();
        int newNumerator = numerator * b - denominator * a;
        int newDenominator = denominator * b;
        Rational result = new Rational();
        result.setNumerator(newNumerator);
        result.setDenominator(newDenominator);
        return result;
    }
    Rational muti(Rational r){
        int a = r.getNumerator();
        int b = r.getDenominator();
        int newNumerator = numerator * a;
        int newDenominator = denominator * b;
        Rational result = new Rational();
        result.setNumerator(newNumerator);
        result.setDenominator(newDenominator);
        return result;
    }
    Rational div(Rational r){
        int a = r.getNumerator();
        int b = r.getDenominator();
        int newNumerator = numerator * b;
        int newDenominator = denominator * a;
        Rational result = new Rational();
        result.setNumerator(newNumerator);
        result.setDenominator(newDenominator);
        return result;
    }
}



import java.text.DecimalFormat;
/*public class Rational {
        int numerator = 1;
        int denominator = 1;
        void setNumerator(int a) {
            int c = f(Math.abs(a), denominator);
            numerator = a / c;
            denominator = denominator / c;
            if (numerator < 0 && denominator < 0) {
                numerator = -numerator;
                denominator = -denominator;
            }
        }

        void setDenominator(int b){
            int c = f(numerator, Math.abs(b));
            numerator =numerator/c;
            denominator =b/c;
            if(numerator< 0&&denominator<0) {
                numerator = -numerator;
                denominator = -denominator;
            }
        }

        int getNumerator() {
            return numerator;
        }

        int getDenominator() {
            return denominator;
        }

        int f(int a, int b) {
            if(a== 0) return 1;
            if(a<b){
                int c = a;
                a=b;
                b= c;
            }
            int r=a%b;
            while(r!= 0){
                a=b;
                b=r;
                r=a%b;
            }
            return b;
        }
        Rational add(Rational r){
            int a = r.getNumerator();
            int b = r.getDenominator();
            int newNumerator = numerator * b + denominator * a;
            int newDenominator = denominator * b;
            Rational result = new Rational();
            result.setNumerator(newNumerator);
            result.setDenominator(newDenominator);
            return result;
        }
        Rational sub(Rational r){
            int a = r.getNumerator();
            int b = r.getDenominator();
            int newNumerator = numerator * b - denominator * a;
            int newDenominator = denominator * b;
            Rational result = new Rational();
            result.setNumerator(newNumerator);
            result.setDenominator(newDenominator);
            return result;
        }
        Rational muti(Rational r){
            int a = r.getNumerator();
            int b = r.getDenominator();
            int newNumerator = numerator * a;
            int newDenominator = denominator * b;
            Rational result = new Rational();
            result.setNumerator(newNumerator);
            result.setDenominator(newDenominator);
            return result;
        }
        Rational div(Rational r){
            int a = r.getNumerator();
            int b = r.getDenominator();
            int newNumerator = numerator * b;
            int newDenominator = denominator * a;
            Rational result = new Rational();
            result.setNumerator(newNumerator);
            result.setDenominator(newDenominator);
            return result;
        }
    }
*/